/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-04-03
 * Time:23:16
 * @description:描述舍友
 */
class Roommate{//总结:小驼峰和大驼峰都是针对首字母
    public String name;//就地初始化是在成员变量里直接赋值
    public int old;
    public int bed;
    private String idol;
    public void classDo(){//方法名/变量名：首字母小写，后面每个单词的首字母大写（小驼峰+大驼峰）
        System.out.println(this.name+"正在认真上课！");
    }
    public void hobby(String like){
        System.out.println(this.name+"的爱好"+like);
    }
    public void noLike(String doNo){
        System.out.println("我最不喜欢"+this.name+"的"+doNo);
    }
    public void grown(String work){
        System.out.println(this.name+"的未来是"+work);
    }
    //成语变量中定义
    public void set(String name,int old,int bed){
        this.name=name;//注意this不能在静态方法中使用，只能在成员方法中使用
        this.old=old;
        this.bed=bed;
    }
    //this是不能在静态方法中使用
    /*public static void fun(){
        this
    }*/
    public Roommate(){//两个构造方法构成重载：1、方法名相同2、参数列表相同
    this("周可心",19,1);//this可以用来调用本类中其他的构造方法
    }
    public Roommate(String name, int old, int bed) {//定义带参数的构造方法——若已经提供，而new一个对象的时候没有传参，就会出错，因为编译器不会
        //再帮你默认生成一个不带参数的构造方法-》这时就不会发生编译错误
        this.name = name;
        this.old = old;
        this.bed = bed;
    }
    //创建成员方法初始化private定义的成员变量
    public String getIdol() {
        return idol;
    }
    public void setIdol(String idol) {
        this.idol = idol;
    }
    //快捷键打印--tostring

    @Override
    public String toString() {
        return "Roommate{" +
                "name='" + name + '\'' +
                ", old=" + old +
                ", bed=" + bed +
                ", idol='" + idol + '\'' +
                '}';
    }
}
public class Juan {//每个单词首字母大写——》大驼峰

    public static void main(String[] args) {
        Date->导包ALT+回车
        Roommate people1=new Roommate("周可心",19,1);//->该括号是调用构造方法：可在里面直接给成员变量赋值
      /*  在成员方法中定义成员变量+打印*/
      //  people1.set("周可心",19,1);
        people1.setIdol("Blackpink");
        System.out.println(people1.toString());
        //people1.hobby("打球弹吉他唱歌健身跑步");
        //people1.noLike("自大");
       // people1.grown("可能保研");

        //初始化:1、默认初始化(成员变量未初始化）-》关于成员变量和局部变量未初始化 2、就地初始化 3、在成员方法中定义 4、构造方法（没带参数和带参数） 5、this在构造方法中调用其他构造方法-》this的三种用法，和注意事项
        // 6、若定义的成员变量是private,需要设置Generate->Getting and setting(设置成员方法间接赋值）

        //System.out.println(people1);//打印的是引用对象在栈上的地址
    }

}
